Mesh shader
各種シェーダ群を必要に応じて使うことができ,逆に使わないこともできる。
また,GPGPU(Compute Shader)的に,複数の子スレッドを起動して,その結果を親スレッドが回収するような処理系も実現可能だ。
https://gyazo.com/fe0611b609edf87334779f6050bf13a4
具体的な用途
ごく普通の頂点シェーダ的な処理のほか
不要なポリゴン群の削除(カリング)
3Dモデルのハイポリゴン化(ポリゴン群の分割)
歴史
Microsoftは,DirectXの拡張と歩調を合わせるように,ジオメトリパイプラインにも機能を追加していった。たとえば,以下のようなものがある。 DirectX 10:「ジオメトリシェーダ」,ポリゴンの増減を行う
DirectX 11:「テッセレーションステージ」(ハルシェーダ,テッセレータ,ドメインシェーダをまとめた名称),プログラマブルにポリゴンを分割加工できる
しかし,追加した機能同士が互いに似ているので,ゲームグラフィックス開発者からは使いどころが分かりにくかった。そのうえ実効性能も今ひとつだったため,多くの開発者にそっぽを向かれてしまう。
この状況を打開すべく,2017年の「Radeon RX Vega」発表時にAMDは,新しいジオメトリパイプラインとして「Primitive Shader」を発表した そして2018年になると,GeForce RTX 20シリーズ発表時にNVIDIAは,「Mesh Shader」を発表した。新ジオメトリパイプラインの標準規格戦争だ。
経緯は省略するが,Microsoftは,2020年春に発表した「DirectX 12 Ultimate」でMesh Shaderを正式採用して,業界的には一丸となってMesh Shader推進で行くことが確定した。 ソニー・インタラクティブエンタテインメントが,PS5でPrimitive Shaderを採用すると表明したことで(関連記事),足並みが若干乱れはしたものの,AMDも,2020年発表の「Radeon RX 6000」シリーズでMesh Shaderへの対応を表明。これにより,Primitive Shaderはお蔵入りとなった。